<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="../js/vue.js"></script>
    <title>监视属性</title>
</head>
<body>
    <!-- 监视属性
        监视属性可以开启异步任务                计算属性不可以开启异步任务
        监视属性可以深度监视，立即监视           计算属性可以有set，get配置项
        
        异步计算使用监视属性
        监视属性可以做到的，计算属性不一定能做到
        计算属性能做到的，监视属性一定能做到
    -->
    <div id="app">
        <h2>今天天气很{{info}} </h2>
        <button @click="change">切换天气</button>
    </div>
    <script>
        Vue.config.productionTip = false

       const vm =  new Vue({
            data(){
                return{
                    message:'这个是监视属性',
                    ishot:false,
                }
            },
            methods: {
                change(){
                    this.ishot = !this.ishot
                }
            },
            watch: {
                // 监视属性既可以监视属性，也可以监视计算属性
                ishot:{
                    immediate:true, // 立即监视，初始化的时候调用一次handler
                    deep:true, //深度监视
                    handler(now,old){
                        console.log(`之前是${old},现在是${now}`);
                    }
                },
                // 简写
                ishot(now,old){

                }
            },
            computed: {
                info(){
                    return this.ishot?'炎热':'凉爽'
                }
            }
        }).$mount('#app')

        // vm.$watch(expOrFn, callback, { options })
    </script>
</body>
</html>